package 所有的题类.E.位运算;

public class 面试题不用加号相加 {
    /**
     * 输入: a = 1, b = 1
     * 输出: 2
     */
    public static void main(String[] args) {
        System.out.println(Integer.toBinaryString(add(4,4)));
    }

    public static int add(int a,int b){
        int c=0;
        int jw=0;
        for (int i = 1; i <32; i++) {
            int curBit=0;
            int a1=(a>>(i-1)) & 1;
            int b1=(b>>(i-1)) & 1;
            if(a1==1 && b1==1 && jw==0) {
                jw=1;
            }else if(a1==1 && b1==0 && jw==1){
                jw=1;
            }else if(a1==0 && b1==1 && jw==1){
                jw=1;
            }else if(a1==1 && b1==1 && jw==1){
                jw=1;
                curBit=1;
            }else{
                curBit=a1|b1|jw;
                jw=0;
            }
            curBit<<=(i-1);
            c=curBit|=c;
        }
        return c;
    }
}
